<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 一.then的基本使用
        // 没一个promise对象都会有一个then方法，then方法会接受两种回调，onResolved 和onRejected
        let P =new Promise((resolve,reject)=>{
            reject("error");
        })
        p.then(function(res){
            // onResolved :成功状态下的promise 会执行 onResolved回调函数
            console.log("成功了",res);
        }),function(err){
            console.log("失败了,err");
        }





        // 二.then的返回值；
        let p =new Promise((resolve,reject)=>{
            resolve('success');
        })
         // let thenResult =  p.then(res=>{
        //     console.log("成功了",res);
        //     return "hello";
        // })
        // 1.没有返还: 得到成功状态的promise 对象 promiseResult 是undefined 
        // console.log(thenResult);
        // 2.返还值 ：  会把返还值 作为下一个promise对象的promiseResult结果值返还；得到的也是一个promise对象；
        // console.log(thenResult);
        // 3.返还一个promise对象,then 会把返还的这个promise对象原封不动的返还出来
        // let thenResult =  p.then(res=>{
        //     console.log("成功了",res);
        //     return new Promise((resolve,reject)=>{
        //         resolve("返还的成功值");
        //         // reject("error");
        //     });
        // })

        // console.log(thenResult);

        // 4.then里抛出错误情况；
        // 会返还一个 rejected 状态的 promise对象，promiseResult 值就是报错内容
        // let thenResult =  p.then(res=>{
        //     console.log("成功了",res);
        //     throw Error("错了");
        // })
        // console.log(thenResult);





        


        // 总结：无论如何 ，promise的then方法 都会返还一个promise对象。每个promise对象都会有一个then方法.then 是可以无限链式调用
       let p2 =  p.then(res=>{
            return 123;
        })
       let p3 =  p2.then(res=>{
            console.log(res);
        })

        p3.then(res=>{
            console.log(res);
        })

    </script>
</body>
</html>